package com.codeczx.slidingconflictdemo;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;

public class MyViewPager extends ViewPager {
    private static final String TAG = "MyViewPager";
    private int mLastX;
    private int mLastY;

    public MyViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

        // 内部解决冲突
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
//        Log.i(TAG, "onInterceptTouchEvent: ");
        int x = (int) ev.getX();
        int y = (int) ev.getY();
        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            Log.i(TAG, "onInterceptTouchEvent: ACTION_DOWN");
            super.onInterceptTouchEvent(ev);
            return false;
        } else {
            Log.i(TAG, "onInterceptTouchEvent: ACTION_Move");
            return true;
        }
    }
//
//    @Override
//    public boolean onTouchEvent(MotionEvent ev) {
//        switch (ev.getAction()) {
//            case MotionEvent.ACTION_DOWN:
//                Log.i(TAG, "onTouchEvent: ACTION_DOWN");
//                break;
//            case MotionEvent.ACTION_MOVE:
//                Log.i(TAG, "onTouchEvent: ACTION_MOVE");
//                break;
//            case MotionEvent.ACTION_UP:
//                Log.i(TAG, "onTouchEvent: ACTION_UP");
//                break;
//            default:
//                break;
//        }
//        return super.onTouchEvent(ev);
//    }

    //
//        // 外部解决滑动冲突
//    @Override
//    public boolean onInterceptTouchEvent(MotionEvent ev) {
//        boolean intercepted = false;
//        int x = (int) ev.getX();
//        int y = (int) ev.getY();
//
//        switch (ev.getAction()) {
//            case MotionEvent.ACTION_DOWN:
//                intercepted = false;
//                // 需要初始化viewpager的一个变量mActivePointerId，如果没有初始化会认为已经被子view消费，
//                // 接下来的滑动操作不会执行，也就是viewpager拦截后不会执行自身的滑动操作。
//                super.onInterceptTouchEvent(ev);
//                break;
//            case MotionEvent.ACTION_MOVE:
//                int deltaX = x - mLastX;
//                int deltaY = y - mLastY;
//                if (Math.abs(deltaX) > Math.abs(deltaY)) {
//                    intercepted = true;
//                } else {
//                    intercepted = false;
//                }
//                break;
//            case MotionEvent.ACTION_UP:
//                intercepted = false;
//                break;
//        }
//
//        mLastX = (int) ev.getX();
//        mLastY = (int) ev.getY();
//
//        return intercepted;
//    }
}
